package dryven.codegen.asm.typeinfo;

public interface TypeInfo {
	
	public abstract int getSlotSize();

	public abstract boolean isRepresentedByInt();
	
	public abstract boolean isBoolean();

	public abstract boolean isByte();

	public abstract boolean isChar();

	public abstract boolean isShort();

	public abstract boolean isInt();

	public abstract boolean isLong();

	public abstract boolean isFloat();

	public abstract boolean isDouble();

	public abstract boolean isReference();
	
	public abstract boolean isVoid();
	
	public abstract boolean isInterface();

	public abstract boolean isArray();
	
	public String getTypeName();
	
	public String getTypeDescriptor();
	
	public String getInternalClassName();
	
	public int getPrimitiveCastScale();
	
	public TypeInfo castPrimitiveUp(TypeInfo t);
	
	public TypeInfo getSuperType();
	
	public boolean isAssignableTo(Class<?> clazz);
}